Machine code or machine language is a system of atomic instructions executed directly by a processing unit. Each instruction performs a specific task, typically either an operation on a unit of data (in a register or in memory, such as add or move), or a jump operation (deciding which instruction executes next, often conditional on the results of a previous instruction). A compiled program can be made up of a series of these atomic instructions. Machine code may be regarded as a hardware-dependent programming language or as the lowest-level representation of a compiled and/or assembled program.
Assembly language is a low-level programming language for a computer, microcontroller, or other programmable device, in which each statement corresponds to a single machine code instruction. Each assembly language is specific to a particular computer architecture. Assembly language can be converted into executable machine code by a utility program referred to as an assembler; the conversion process is referred to as assembly, or assembling the code.